# ifndef __Mercator_H_
# define __Mercator_H_

# include "Transform.h"

class CMercatorToLL : public CTransformationBase {
  public:
	CMercatorToLL (double _a, double _e, double _k0, double _FE, double _FN, double _x0);

	virtual void ApplyTo (point_t & _point) const;

  private:
	// Semi-major axis
	const double m_a;
	// Eccentricity
	const double m_e;
	// The scale factor.
	const double m_k0;
	// False Easting & Northing.
	const double m_FE, m_FN;
	// Central meridian.
	const double m_x0;
};

class CLLToMercator : public CTransformationBase {
  public:
	CLLToMercator (double _a, double _e, double _k0, double _FE, double _FN, double _x0);

	virtual void ApplyTo (point_t & _point) const;

  private:
	// Semi-major axis
	const double m_a;
	// Eccentricity
	const double m_e;
	// The scale factor.
	const double m_k0;
	// False Easting & Northing.
	const double m_FE, m_FN;
	// Central meridian.
	const double m_x0;
};

# endif __Mercator_H_